﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;

namespace Royaumes_Libres.Database
{
    public class cRace
    {
        protected int pPkRace;
        protected string pName;
        protected int pBonusMana;
        protected int pBonusWood;
        protected int pBonusOre;
        protected int pBonusFood;
        protected int pBonusPopulation;

        //public int PkRace { get { return this.pPkRace; } }
        //public string Name { get { return this.pName; } }
        //public int BonusMana { get { return this.pBonusMana; } }
        //public int BonusWood { get { return this.pBonusWood; } }
        //public int BonusOre { get { return this.pBonusOre; } }
        //public int BonusFood { get { return this.pBonusFood; } }
        //public int BonusPopulation { get { return this.pBonusPopulation; } }

        /// <summary>
        /// À définir par l'équipe web
        /// </summary>
        /// <returns>Ce que vous avez besoin</returns>
        /// <remarks>
        /// Ici vous pouvez le modifié à votre guise pour afficher ce
        /// que vous avez besoin d'afficher.  Peut inclure le Html nécéssaire
        /// à l'affichage web
        /// P.S.: Ne pas oublié de changer les commentaires pour indiqué où
        ///     c'est utilisé et qui l'utilise
        /// </remarks>
        public override string ToString()
        {
            string str = "PkRace = " + this.pPkRace.ToString();
            str += "<br/>Name = " + this.pName;
            str += "<br/>BonusMana = " + this.pBonusMana.ToString();
            str += "<br/>BonusWood = " + this.pBonusWood.ToString();
            str += "<br/>BonusOre = " + this.pBonusOre.ToString();
            str += "<br/>BonusFood = " + this.pBonusFood.ToString();
            str += "<br/>BonusPopulation = " + this.pBonusPopulation.ToString();

            return str; // this.pName;
        }

        /// <summary>
        /// Pour instantié la classe cRace.
        /// à l'interne seulement.
        /// </summary>
        /// <remarks>Patrick Chabot</remarks>
        protected cRace() { }

        /// <summary>
        /// Retourne un cRace de la race demandée.
        /// </summary>
        /// <param name="PkRace">PkRace</param>
        /// <returns>cRace</returns>
        /// <remarks>Patrick Chabot</remarks>
        public static cRace GetRace(int PkWorld, int PkRace)
        {
            SqlCommand cmd = cSQL.GetDbJeuCommand();
            cRace raceItem;

            try
            {
                cmd.Connection.Open();
                cmd.CommandText = "cde.spGetRace";
                cmd.Parameters.Add(cSQL.Param("@PkRace", PkRace, SqlDbType.Int));
                cmd.Parameters.Add(cSQL.Param("@PkWorld", PkWorld, SqlDbType.Int));
                SqlDataReader dr = cmd.ExecuteReader();

                dr.Read();

                raceItem = new cRace();
                raceItem.pPkRace = dr.GetInt32(0);
                raceItem.pName = dr.GetString(1);
                raceItem.pBonusMana = dr.GetInt32(2);
                raceItem.pBonusWood = dr.GetInt32(3);
                raceItem.pBonusOre = dr.GetInt32(4);
                raceItem.pBonusFood = dr.GetInt32(5);
                raceItem.pBonusPopulation = dr.GetInt32(6);
            }
            catch (Exception ex)
            {
                cmd.Connection.Close();
                throw new Exception("cRace.GetRace(int PkRace): " + ex.Message);
            }
            return raceItem;
        }

        /// <summary>
        /// Retourne un Array des races existante.
        /// </summary>
        /// <returns>cRace[]</returns>
        /// <remarks>Patrick Chabot</remarks>
        public static cRace[] GetRaces()
        {
            List<cRace> lst = new List<cRace>();
            SqlCommand cmd = cSQL.GetDbJeuCommand();
            cRace raceItem;

            try
            {
                cmd.Connection.Open();
                cmd.CommandText = "cde.spGetRace";
                SqlDataReader dr = cmd.ExecuteReader();

                while (dr.Read())
                {
                    raceItem = new cRace();
                    raceItem.pPkRace = dr.GetInt32(0);
                    raceItem.pName = dr.GetString(1);
                    raceItem.pBonusMana = dr.GetInt32(2);
                    raceItem.pBonusWood = dr.GetInt32(3);
                    raceItem.pBonusOre = dr.GetInt32(4);
                    raceItem.pBonusFood = dr.GetInt32(5);
                    raceItem.pBonusPopulation = dr.GetInt32(6);
                    lst.Add(raceItem);
                }
                return lst.ToArray();
            }
            catch (Exception ex)
            {
                cmd.Connection.Close();
                throw new Exception("cRace[] cRace.GetRaces(): " + ex.Message);
            }
        }
    }
}